﻿using System;
using System.Collections.Generic;
using Domain.MainModule.Entities;

namespace Application.MainModule.CreditCardManagement
{
    public interface ICreditCardManagementService
    {
        /// <summary>
        /// Add new creditCard.
        /// </summary>
        /// <param name="creditCard">CreditCard to be added</param>
        void AddCreditCard(CreditCard creditCard);

        /// <summary>
        /// Change existing creditCard.
        /// </summary>
        /// <param name="creditCard">Existing creditCard to modify.</param>
        void ChangeCreditCard(CreditCard creditCard);

        /// <summary>
        /// Find an creditCard by its Id.
        /// </summary>
        /// <param name="creditCardId">CreditCardId</param>
        /// <returns>An creditCard</returns>
        CreditCard FindCreditCardById(Guid creditCardId);

        /// <summary>
        /// Find an creditCard by user Id.
        /// </summary>
        /// <param name="userId">Membership UserId</param>
        /// <returns>An creditCard</returns>
        List<CreditCard> FindCreditCardByUserId(Guid userId);

        /// <summary>
        /// Remove an existing creditCard.
        /// </summary>
        /// <param name="creditCard">The adress to be removed.</param>
        void RemoveCreditCard(CreditCard creditCard);
    }
}
